package paidaxing.blog.post.utils;

import paidaxing.blog.post.dto.request.PostRequestDTO;
import paidaxing.blog.post.dto.request.CategoryRequestDTO;
import paidaxing.blog.post.dto.request.TagRequestDTO;
import paidaxing.blog.post.dto.PostDTO;
import paidaxing.blog.post.dto.CategoryDTO;
import paidaxing.blog.post.dto.TagDTO;
import paidaxing.blog.post.entity.Tags;
import paidaxing.blog.post.dto.response.TagResponseDTO;

/**
 * 请求DTO转换工具类
 */
public class RequestConverter {

    /**
     * 将PostRequestDTO转换为PostDTO
     * 
     * @param postRequestDTO 文章请求DTO
     * @return 文章DTO
     */
    public static PostDTO toPostDTO(PostRequestDTO postRequestDTO) {
        if (postRequestDTO == null) {
            return null;
        }

        PostDTO postDTO = new PostDTO();
        postDTO.setTitle(postRequestDTO.getTitle());
        postDTO.setContent(postRequestDTO.getContent());
        postDTO.setExcerpt(postRequestDTO.getExcerpt());
        postDTO.setCoverImage(postRequestDTO.getCoverImage());
        postDTO.setStatus(postRequestDTO.getStatus());
        postDTO.setIsTop(postRequestDTO.getIsTop());
        postDTO.setIsRecommend(postRequestDTO.getIsRecommend());
        postDTO.setPassword(postRequestDTO.getPassword());
        postDTO.setUserId(postRequestDTO.getUserId());
        postDTO.setCategoryId(postRequestDTO.getCategoryId());
        postDTO.setTagIds(postRequestDTO.getTagIds());

        return postDTO;
    }

    /**
     * 将CategoryRequestDTO转换为CategoryDTO
     * 
     * @param categoryRequestDTO 分类请求DTO
     * @return 分类DTO
     */
    public static CategoryDTO toCategoryDTO(CategoryRequestDTO categoryRequestDTO) {
        if (categoryRequestDTO == null) {
            return null;
        }

        CategoryDTO categoryDTO = new CategoryDTO();
        categoryDTO.setName(categoryRequestDTO.getName());
        categoryDTO.setSlug(categoryRequestDTO.getSlug());
        categoryDTO.setDescription(categoryRequestDTO.getDescription());
        categoryDTO.setParentId(categoryRequestDTO.getParentId());
        categoryDTO.setOrderNum(categoryRequestDTO.getOrderNum());

        return categoryDTO;
    }

    /**
     * 将TagRequestDTO转换为TagDTO
     * 
     * @param tagRequestDTO 标签请求DTO
     * @return 标签DTO
     */
    public static TagDTO toTagDTO(TagRequestDTO tagRequestDTO) {
        if (tagRequestDTO == null) {
            return null;
        }

        TagDTO tagDTO = new TagDTO();
        tagDTO.setName(tagRequestDTO.getName());
        tagDTO.setSlug(tagRequestDTO.getSlug());
        tagDTO.setDescription(tagRequestDTO.getDescription());
        tagDTO.setColor(tagRequestDTO.getColor());

        return tagDTO;
    }
    
    /**
     * 将TagRequestDTO转换为Tags实体
     * 
     * @param tagRequestDTO 标签请求DTO
     * @return 标签实体
     */
    public static Tags convertToTagEntity(TagRequestDTO tagRequestDTO) {
        if (tagRequestDTO == null) {
            return null;
        }
        
        Tags tag = new Tags();
        tag.setName(tagRequestDTO.getName());
        tag.setSlug(tagRequestDTO.getSlug());
        tag.setDescription(tagRequestDTO.getDescription());
        tag.setColor(tagRequestDTO.getColor());
        
        return tag;
    }
    
    /**
     * 将Tags实体转换为TagResponseDTO
     * 
     * @param tags 标签实体
     * @return 标签响应DTO
     */
    public static TagResponseDTO convertToTagResponseDTO(Tags tags) {
        if (tags == null) {
            return null;
        }
        
        TagResponseDTO tagResponseDTO = new TagResponseDTO();
        tagResponseDTO.setId(tags.getId());
        tagResponseDTO.setName(tags.getName());
        tagResponseDTO.setSlug(tags.getSlug());
        tagResponseDTO.setDescription(tags.getDescription());
        tagResponseDTO.setColor(tags.getColor());
        tagResponseDTO.setPostCount(tags.getPostCount());
        tagResponseDTO.setCreatedAt(tags.getCreatedAt());
        tagResponseDTO.setUpdatedAt(tags.getUpdatedAt());
        tagResponseDTO.setDeleted(tags.getDeleted());
        
        return tagResponseDTO;
    }
}